package com.yzh.oop4.teacher;

/**
 * 为什么接口开始支持非抽象方法了
 *
 *
 */
public interface MyInterface {

    //抽象方法:实现类必须实现，否则就是抽象类
    public abstract void method1();

    //非抽象方法1：static方法（JDK7及其之前不允许出现static方法）
    //1.只能通过接口名调用，不能通过对象名调用
    //2.实现类不能重写
    public static void method2(){
        System.out.println("-------MyInterface static method-------");
    }


//    public default void method4(){
//
//    }
    //非抽象方法2：非static方法-default
    //1.不能通过接口名调用，只能通过对象名调用
    //2.可以不重写而是继承，也可以重写但是必须去掉default
    public default void method3(){
        System.out.println("----------MyInterface default method------------");
        method5();
    }

    public default void method4(){
        System.out.println("----------MyInterface default method------------");
        method5();
    }
    //JDK9的新特征：可以出现private非抽象方法，不需要写default
    private void method5(){
        System.out.println("--------the same content---------");
    }

    public static void main(String[] args) {
        MyInterface.method2();
        //MyInterface.method3();
    }
}
